package solitaire.controle;

import solitaire.application.Sabot;
import solitaire.application.TasDeCartes;
import solitaire.application.Usine;
import solitaire.presentation.PSabot;

public class CSabot extends Sabot {

	PSabot presentation;

	public CSabot(String nom, Usine u) {
		super(nom, u);
		presentation = new PSabot(((CTasDeCartes) cachees).getPresentation(),
				((CTasDeCartes) visibles).getPresentation(), this);
	}
	
	public void retournerCarte() throws Exception {
		if (isCarteRetournable()) {
			super.retournerCarte();
			if (cachees.isVide()) {
				presentation.desactiverRetournerCarte();
				if (!visibles.isVide()) {
					presentation.activerRetournerTas();
				}
			}
		}
	}

	public void retourner() throws Exception {
		if (isRetournable()) {
			super.retourner();
			if (!isRetournable()) {
				presentation.desactiverRetournerTas();
				if (isCarteRetournable()) {
					presentation.activerRetournerCarte();
				}
			}
		}
	}

	public void setReserve(TasDeCartes tas) {
		super.setReserve(tas);
		if (!cachees.isVide()) {
			presentation.activerRetournerCarte();
		}
	}

	public void depiler() throws Exception {
		if (!isVide()) {
			super.depiler();
			if (cachees.isVide() && visibles.isVide()) {
				presentation.desactiverRetournerTas();
			}
		}
	}

	public PSabot getPresentation() {
		return presentation;
	}
}
